package com.soul.model.vo;

import com.soul.model.db.UserInfo;
import com.soul.model.mongo.Movement;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.beans.BeanUtils;
import org.springframework.util.StringUtils;

import java.text.SimpleDateFormat;
import java.util.Date;

@Data
@NoArgsConstructor
@AllArgsConstructor
public class MovementsVo {
    /**
     *  动态id
     */
    private String id;
    /**
     *  用户id
     */
    private Long userId;
    /**
     *  头像
     */
    private String avatar;
    /**
     *  昵称
     */
    private String nickname;
    /**
     *  位置名称
     */
    private String location;
    /**
     *  性别 man woman
     */
    private String gender;
    /**
     *  年龄
     */
    private Integer age;
    /**
     *  标签
     */
    private String[] tags;
    /**
     *  文字动态
     */
    private String textContent;
    /**
     *  图片动态
     */
    private String[] imageContent;
    /**
     *  距离
     */
    private String distance;
    /**
     *  发布时间 如: 10分钟前
     */
    private String createDate;
    /**
     *  点赞数
     */
    private Integer likeCount = 0;
    /**
     *  评论数
     */
    private Integer commentCount = 0;
    /**
     *  喜欢数
     */
    private Integer loveCount = 0;
    /**
     *  是否点赞（1是，0否）
     */
    private int hasLiked;
    /**
     *  是否喜欢（1是，0否）
     */
    private int hasLoved;

    public static MovementsVo init(UserInfo userInfo, Movement item) {
        MovementsVo vo = new MovementsVo();
        //设置动态数据
        BeanUtils.copyProperties(item, vo);
        vo.setId(item.getId().toHexString());
        //设置用户数据
        BeanUtils.copyProperties(userInfo, vo);
        if(!StringUtils.isEmpty(userInfo.getTags())) {
            vo.setTags(userInfo.getTags().split(","));
        }
        //图片列表
        vo.setImageContent(item.getMedias().toArray(new String[]{}));
        //距离
        vo.setDistance("500米");
        Date date = new Date(item.getCreated());
        vo.setCreateDate(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(date));
        //设置是否点赞(后续处理)
        vo.setHasLoved(0);
        vo.setHasLiked(0);
        return vo;
    }
}